#ifndef __GPIO_H__
#define __GPIO_H__

#include "gd32f4xx.h"


#define GPIO_INIT_OUT_PP(RCU, PORT, PIN)  {	\
																					rcu_periph_clock_enable(RCU);	\
																					gpio_mode_set(PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, PIN);	\
																					gpio_output_options_set(PORT, GPIO_OTYPE_PP, GPIO_OSPEED_MAX, PIN);	\
																					}

#define GPIO_INIT_OUT_OD(RCU, PORT, PIN)  {	\
																					rcu_periph_clock_enable(RCU);	\
																					gpio_mode_set(PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, PIN);	\
																					gpio_output_options_set(PORT, GPIO_OTYPE_OD, GPIO_OSPEED_MAX, PIN);	\
																					}

#define GPIO_INIT_OUT_OD_PU(RCU, PORT, PIN)		{	\
																							rcu_periph_clock_enable(RCU);	\
																							gpio_mode_set(PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, PIN);	\
																							gpio_output_options_set(PORT, GPIO_OTYPE_OD, GPIO_OSPEED_MAX, PIN);	\
																							}

#define GPIO_OUT_HIGH(PORT, PIN)		gpio_bit_set(PORT, PIN)
#define GPIO_OUT_LOW(PORT, PIN)			gpio_bit_reset(PORT, PIN)																							

#endif